From 747df7aa3cc1cc3d97edd0d097556d4d79116f9e Mon Sep 17 00:00:00 2001 From: Benjamin Otte Date: Thu, 8 Dec 2016 17:40:07 +0100 Subject: [PATCH] vulkan: Also wait on the draw semaphore when present()ing That way we have a synchronization primitive at the start and at the end. --- gdk/gdkvulkancontext.c | 4 ++++ gsk/gskvulkanrender.c | 6 +++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/gdk/gdkvulkancontext.c b/gdk/gdkvulkancontext.c index f0af29b847..399cd984d0 100644 --- a/gdk/gdkvulkancontext.c +++ b/gdk/gdkvulkancontext.c @@ -306,6 +306,10 @@ gdk_vulkan_context_end_frame (GdkDrawContext *draw_context, GDK_VK_CHECK (vkQueuePresentKHR, gdk_vulkan_context_get_queue (context), &(VkPresentInfoKHR) { .sType = VK_STRUCTURE_TYPE_PRESENT_INFO_KHR, + .waitSemaphoreCount = 1, + .pWaitSemaphores = (VkSemaphore[]) { + priv->draw_semaphore + }, .swapchainCount = 1, .pSwapchains = (VkSwapchainKHR[]) { priv->swapchain diff --git a/gsk/gskvulkanrender.c b/gsk/gskvulkanrender.c index c57e701106..8fd91600ae 100644 --- a/gsk/gskvulkanrender.c +++ b/gsk/gskvulkanrender.c @@ -237,13 +237,17 @@ gsk_vulkan_render_submit (GskVulkanRender *self, .sType = VK_STRUCTURE_TYPE_SUBMIT_INFO, .waitSemaphoreCount = 1, .pWaitSemaphores = (VkSemaphore[1]) { - gdk_vulkan_context_get_draw_semaphore (self->vulkan), + gdk_vulkan_context_get_draw_semaphore (self->vulkan) }, .pWaitDstStageMask = (VkPipelineStageFlags []) { VK_PIPELINE_STAGE_COLOR_ATTACHMENT_OUTPUT_BIT, }, .commandBufferCount = 1, .pCommandBuffers = &self->command_buffer, + .signalSemaphoreCount = 1, + .pSignalSemaphores = (VkSemaphore[1]) { + gdk_vulkan_context_get_draw_semaphore (self->vulkan) + } }, fence); -- 2.30.2